<?php
	/**
	 * 获取已上传的文件列表
	 * User: Jinqn
	 * Date: 14-04-09
	 * Time: 上午10:17
	 */
	include "Uploader.class.php";

	/* 判断类型 */
	switch ($_GET['action'])
	{
		/* 列出文件 */
		case 'listfile':
			$allowFiles = $CONFIG['fileManagerAllowFiles'];
			$listSize = $CONFIG['fileManagerListSize'];
			$path = $CONFIG['fileManagerListPath'];
			break;
		/* 列出图片 */
		case 'listimage':
		default:
			$allowFiles = $CONFIG['imageManagerAllowFiles'];
			$listSize = $CONFIG['imageManagerListSize'];
			$path = $CONFIG['imageManagerListPath'];
	}
	$allowFiles = substr(str_replace("." , "|" , join("" , $allowFiles)) , 1);

	/* 获取参数 */
	$size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize;
	$start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;
	$end = $start + $size;

	/* 获取文件列表 */
	$path = $_SERVER['DOCUMENT_ROOT'] . (substr($path , 0 , 1) == "/" ? "" : "/") . $path;
	$files = getfiles($path , $allowFiles);
	if(!count($files))
	{
		return json_encode(array(
			"state" => "no match file" ,
			"list"  => array() ,
			"start" => $start ,
			"total" => count($files),
		));
	}

	/* 获取指定范围的列表 */
	$len = count($files);
	for ($i = min($end , $len) - 1 , $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--)
	{
		$list[] = $files[$i];
	}
//倒序
//for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){
//    $list[] = $files[$i];
//}

	/* 返回数据 */
	$result = json_encode(array(
		"state" => "SUCCESS" ,
		"list"  => $list ,
		"start" => $start ,
		"total" => count($files),
	));

	return $result;


	/**
	 * 遍历获取目录下的指定类型的文件
	 *
	 * @param       $path
	 * @param array $files
	 *
	 * @return array
	 */
	function getfiles($path , $allowFiles , &$files = array())
	{
		if(!is_dir($path)) return null;
		if(substr($path , strlen($path) - 1) != '/') $path .= '/';
		$handle = opendir($path);
		while (false !== ($file = readdir($handle)))
		{
			if($file != '.' && $file != '..')
			{
				$path2 = $path . $file;
				if(is_dir($path2))
				{
					getfiles($path2 , $allowFiles , $files);
				}
				else
				{
					if(preg_match("/\.(" . $allowFiles . ")$/i" , $file))
					{
						$files[] = array(
							'url'   => substr($path2 , strlen($_SERVER['DOCUMENT_ROOT'])) ,
							'mtime' => filemtime($path2),
						);
					}
				}
			}
		}

		return $files;
	}